package demo02.Set;

import java.util.HashSet;
import java.util.Iterator;

/*
    HashSet存储自定义类型元素

    set集合报错元素唯一:
        存储的元素(String,Integer,...Student,Person...),必须重写hashCode方法和equals方法

    要求:
        同名同年龄的人,视为同一个人,只能存储一次
 */
public class Demo03HashSetSavePerson {
    public static void main(String[] args) {
        HashSet<Person>hashSet=new HashSet<>();
        Person p1=new Person("张三",19);
        Person p2=new Person("李四",20);
        Person p3=new Person("李四",20);

        hashSet.add(p1);
        hashSet.add(p2);
        hashSet.add(p3);
        System.out.println(hashSet);
        System.out.println(p2==p3);//比较地址值
        System.out.println(p2.equals(p3));//比较哈希值
        System.out.println(p2.hashCode());//1967205423
        System.out.println(p3.hashCode());//42121758
/*//    Person p3=new Person("李四",20);
        hashSet.add(p1);
        hashSet.add(p2);
//        hashSet.add(p3);
        Iterator <Person> iterator=hashSet.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next().getAge()+iterator.next().getName());
        }*/
//        System.out.println(hashSet);
    }
}
